package com.qiu.demo.util;

import java.util.HashMap;
import java.util.Map;

import com.qiu.demo.enums.HttpCodeEnum;

import lombok.Data;

/**
 * <p>
 * 统一结果集处理类
 * </p>
 *
 */
@Data
public class JsonResult {

    private Integer code;

    private Boolean status;

    private String message;

    private Map<String, Object> data = new HashMap<>();

    /**
     * 请求成功
     *
     * @return success
     */
    public static JsonResult success() {
        JsonResult result = new JsonResult();
        result.setStatus(true);
        result.setCode(HttpCodeEnum.SUCCESS.getCode());
        result.setMessage(HttpCodeEnum.SUCCESS.getMessage());
        return result;
    }

    /**
     * 请求失败
     *
     * @return error
     */
    public static JsonResult error() {
        JsonResult result = new JsonResult();
        result.setStatus(false);
        result.setCode(HttpCodeEnum.ERROR.getCode());
        result.setMessage(HttpCodeEnum.ERROR.getMessage());
        result.data(null);
        return result;
    }

    /**
     * 设置 状态码 和 信息 （一）
     *
     * @param code 状态码
     * @param message 信息
     * @return JsonResult
     */
    public JsonResult codeAndMessage(Integer code, String message) {
        this.setCode(code);
        this.setMessage(message);
        return this;
    }

    /**
     * 设置 状态码 和 信息 （二）
     *
     * @param httpCodeEnum 枚举信息
     * @return JsonResult
     */
    public JsonResult codeAndMessage(HttpCodeEnum httpCodeEnum) {
        this.setCode(httpCodeEnum.getCode());
        this.setMessage(httpCodeEnum.getMessage());
        return this;
    }

    /**
     * 设置 数据 （一）
     *
     * @param key key
     * @param value value  ==> Object
     * @return JsonResult
     */
    public JsonResult data(String key, Object value) {
        this.data.put(key, value);
        return this;
    }

    /**
     * 设置 数据 （二）
     *
     * @param data Map 集合
     * @return JsonResult
     */
    public JsonResult data(Map<String, Object> data) {
        this.setData(data);
        return this;
    }

}

